package mx.frantor.catalogos.bussines;

import static mx.frantor.security.util.EncriptaCadena.*;


import java.util.List;

import mx.frantor.catalogos.dao.UsuariosDAO;
import mx.frantor.catalogos.daoimp.UsuariosDAOImpl;
import mx.frantor.catalogos.entitys.UsuariosEntity;

public class UsuariosBussines {
	
	private UsuariosDAO usrsDAO = new UsuariosDAOImpl();
	// Hash de encriptacion : MD5, SHA1, SHA256, SHA384, SHA512
	private final String hash = SHA256;
	String res=null;	
	
	public String AgregarUsuario(String nickName, String password, String privilegios){
		UsuariosEntity nuevoUsuario = new UsuariosEntity();
		
		nuevoUsuario.setNickName(nickName);
		nuevoUsuario.setPassword(getDigest(password, hash));
		nuevoUsuario.setPrivilegios(privilegios);
		nuevoUsuario.setBlock("");
		
		res = usrsDAO.agregarUsuarios(nuevoUsuario);
		res="";
		return res;
	}
	
	public String ModificarUsuario(Integer idUsuario, String nickName, String password, String privilegios){
		UsuariosEntity nuevoUsuario = new UsuariosEntity();
		
		nuevoUsuario.setIdUsuario(idUsuario);
		nuevoUsuario.setNickName(nickName);
		nuevoUsuario.setPassword(getDigest(password, hash));
		nuevoUsuario.setPrivilegios(privilegios);
		
		res = usrsDAO.modificarUsuarios(nuevoUsuario);
		res="";
		return res;
	}
	
	public String EliminarUsuario(Integer idUsuario){
		res = usrsDAO.eliminarUsuario(idUsuario);
		return res;
	}
	
	public List<UsuariosEntity> getTodosUsuarios(){
		List<UsuariosEntity> usuarios = usrsDAO.getTodosUsuariosActivos();
		return usuarios;
	}
	
	public UsuariosEntity getUsrPorId(Integer idUsuario){
		UsuariosEntity usr = usrsDAO.getUsuarioId(idUsuario);
		return usr;
	}
	public List<UsuariosEntity> getUsuarioPorId(Integer idUsuario){
		List<UsuariosEntity> usuarios = usrsDAO.getUsuarioPorId(idUsuario);
		return usuarios;
	}
	
	/**
	 * 
	 * @param inUsr
	 * @param inPwd
	 * @return Usuario valido o null si usuario o passwd son invalidos
	 */
	public UsuariosEntity validaUsuario(String inUsr, String inPwd) {
		UsuariosEntity usrResult = new UsuariosEntity();
		try{
			usrResult = usrsDAO.validaUsuario(inUsr, inPwd);
			
			return usrResult;
		}catch(IndexOutOfBoundsException exc){
			System.out.println("El usuario "+ inUsr +" no existe o es invalido: " + exc.getMessage());
			return null;
			
		}

	}
	
	public String BlockUsuarios(Integer idUsuario, String Block){
		res = usrsDAO.restriccionesUsuarios(idUsuario, Block);
		res="";
		return res;
	}
	
	public String validaProgramas(String cadena, String var){
		System.out.println(cadena + " - " + var);
		if(cadena!=null){
		if(cadena.contains(var)){
			System.out.println("NoValido");
			return "noValido";
		}else{
			System.out.println("Valido");
			return var;
		}}else{
			return var;
		}
	}

}
